package pms.dao;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import pms.om.Saison;

public class SaisonDao extends HibernateDaoSupport {
	private RennlaeuferDao rennlaeuferDao;
	
	public RennlaeuferDao getRennlaeuferDao() {
		return rennlaeuferDao;
	}

	public void setRennlaeuferDao(RennlaeuferDao rennlaeuferDao) {
		this.rennlaeuferDao = rennlaeuferDao;
	}
	/**
	 * returns a single Saison by its primary db key
	 * 
	 * @param id
	 * @return the Saison
	 * 
	 */
	public Saison findById(int id) {
		HibernateTemplate template = getHibernateTemplate();
		return (Saison) template.get(Saison.class, id);
	}

	/**
	 * @return all Saison objects from the database.
	 */
	@SuppressWarnings("unchecked")
	public List<Saison> findAll() {
		HibernateTemplate template = getHibernateTemplate();
		@SuppressWarnings("rawtypes")
		List results = template.loadAll(Saison.class);
		return results;
	}

	/**
	 * creates and persists a new Saison object.
	 * 
	 * @param Saison
	 * @param saisonid
	 */
	public void create(String bezeichnung, String saisonid) {
		HibernateTemplate template = getHibernateTemplate();
		//Saison s = new Saison("Wintersaison 2004", "2004/2005");
		Saison saison = new Saison(bezeichnung, saisonid);
		template.persist(saison);
	}

	/**
	 * Modifies an existing persistent Saison object.
	 * 
	 * @param id the primary key used in the database
	 * @param bezeichnung
	 * @param saisonid
	 */
	public void modify(int id, String bezeichnung, String saisonid) {
		HibernateTemplate template = getHibernateTemplate();
		Saison saison = (Saison) template.get(Saison.class, id);
		saison.setBezeichnung(bezeichnung);
		saison.setSaisonid(saisonid);
		template.saveOrUpdate(saison);
	}

	/**
	 * deletes a rennlaeufer using it's id.
	 * 
	 * @param id
	 * @throws SaisonDeleteException
	 *             if Saison is stored in a Rennen(?) object
	 */
	public void deleteById(int id) throws SaisonDeleteException {
		HibernateTemplate template = getHibernateTemplate();
		Saison saison = findById(id);
		template.flush();
		Saison b = findById(id);
//		Set<Rennen> rennen = b.getRennen();
//		if (fahrten == null || fahrten.size() == 0) {
			template.delete(b);
//		} else {
//			throw new RennenDeleteException();
//		}
	}
}
